package com.cesce.batch.cobros.validation;


import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemProcessor;

import com.cesce.batch.cobros.exceptions.CobComunicadoValidationException;
import com.cesce.batch.cobros.reverse.Cobcomunicados;
import com.cesce.batch.cobros.reverse.Cobestados;
import com.cesce.batch.cobros.reverse.Cobformatofechacobros;
import com.cesce.batch.cobros.reverse.Cobformatoimportes;
import com.cesce.batch.cobros.reverse.Cobparametros;
import com.cesce.batch.cobros.reverse.Cobregistro;


public class Processor implements ItemProcessor<Cobcomunicados, Cobcomunicados> {

	protected final Log logger = LogFactory.getLog(getClass());

	
	public Cobcomunicados process(Cobcomunicados cobComunicados) throws Exception {
		


		Cobregistro cobRegistro = Cobregistro.findCobregistro(cobComunicados.getIdregistro().getIdregistro());
		Cobparametros params = cobRegistro.getIdcodparametro();


//		// Procesado Fecha de Cobros
//		Date fechaDeCobroDate = new Date();
//		
//		fechaDeCobroDate= cobComunicados.getFechadecobrodate();
//		String fechaDeCobro = cobComunicados.getFechadecobro();
//		Cobformatofechacobros cobFormatoFechacobros = params.getIdformatofechacobro();
//
//		SimpleDateFormat formatoFechaCobros = new SimpleDateFormat(cobFormatoFechacobros.getFormatofechacobro().replace("m", "M"));
//		fechaDeCobroDate =(Date)formatoFechaCobros.parse(fechaDeCobro);
//		cobComunicados.setFechadecobrodate(fechaDeCobroDate);		

		//Procesado de Importe
		
		String importe = cobComunicados.getImporte();
		Cobformatoimportes cobFormatoImportes = params.getIdformatoimporte();
		if (params.getPosicionimporte().intValue()!=-1) {
			//Adaptamos el formato del importe a formato java
			if (importe.lastIndexOf(".")>importe.lastIndexOf(",")){
				importe=importe.replace(",","");
			}					
			else{
				importe=importe.replace(".","");
				importe=importe.replace(",",".");
			}
			cobComunicados.setValorimporte(BigDecimal.valueOf(Double.valueOf(importe)));
		}	
		
		// Procesado de Divisa
		
		if (cobComunicados.getDivisaString().length()>0) {
			try {
				cobComunicados.setDivisa(BigDecimal.valueOf(Double.parseDouble(cobComunicados.getDivisaString())));
			} catch (Exception e) {
				throw new CobComunicadoValidationException("Error volcado divisa: " + cobComunicados.getDivisaString(),e);
			}
		}
		
		try {
			cobComunicados.setIdestado(Cobestados.findCobestados(Cobestados.ID_COMUNICADO_CORRECTO));
		} catch (Exception e) {
			throw new CobComunicadoValidationException("Error al introducir el IDComunicado: " + cobComunicados.getDivisaString(),e);
		}
			
	return cobComunicados;
	}


}
